package com.lingyu.jsjx.domain;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 教学反思对象 jsjx_teaching_reflection
 * 
 * @author ruoyi
 * @date 2025-07-31
 */
@Getter
@Setter
@TableName("jsjx_teaching_reflection")
public class TeachingReflection extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 反思id（主见） */
    @TableId(value = "reflection_id", type = IdType.AUTO)
    private Long reflectionId;

    /** 课程名称 */
    @Excel(name = "课程名称")
    @NotBlank(message = "课程名称不能为空")
    private String courseName;

    /** 所属学院id */
    @NotNull(message = "所属学院不正确")
    private Long collageId;

    /** 所属学院name */
    @Excel(name = "所属学院")
    private String collageName;

    /** 所属专业id */
    @NotNull(message = "所属专业不正确")
    private Long majorId;

    /** 所属专业name */
    @Excel(name = "所属专业")
    private String majorName;

    /** 所属班级id */
    @NotNull(message = "所属班级不正确")
    private Long clazzId;

    /** 所属班级name */
    @Excel(name = "所属班级")
    private String clazzName;

    /** 授课老师id */
    @NotNull(message = "授课老师不正确")
    private Long teacherId;

    /** 授课老师name */
    @Excel(name = "授课老师")
    private String teacherName;

    /** 教学类型id */
    @Excel(name = "教学类型", readConverterExp = "50=理论教学,51=理实一体化教学,52=实践教学")
    @NotNull(message = "教学类型不正确")
    private Long teachTypeId;

    /** 教学类型name */
    private String teachTypeName;

    /** 课程学时 */
    @Excel(name = "课程学时")
    @NotBlank(message = "课程学时不能为空")
    private String courseHour;

    /** 教学目标 */
    @Excel(name = "教学目标")
    @NotBlank(message = "教学目标不能为空")
    private String teachTarget;

    /** 课程重点 */
    @Excel(name = "课程重点")
    @NotBlank(message = "课程重点不能为空")
    private String courseEmphasis;

    /** 课程难点 */
    @Excel(name = "课程难点")
    @NotBlank(message = "课程难点不能为空")
    private String courseDifficulty;

    /** 授课时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "授课时间", width = 30, dateFormat = "yyyy-MM-dd")
    @NotNull(message = "授课时间不能为空")
    private Date teachTime;

    /** 教学成果 */
    @Excel(name = "教学成果")
    @NotBlank(message = "教学成果不能为空")
    private String teachAchievement;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("reflectionId", getReflectionId())
            .append("courseName", getCourseName())
            .append("collageId", getCollageId())
            .append("collageName", getCollageName())
            .append("majorId", getMajorId())
            .append("majorName", getMajorName())
            .append("clazzId", getClazzId())
            .append("clazzName", getClazzName())
            .append("teacherId", getTeacherId())
            .append("teacherName", getTeacherName())
            .append("teachTypeId", getTeachTypeId())
            .append("teachTypeName", getTeachTypeName())
            .append("courseHour", getCourseHour())
            .append("teachTarget", getTeachTarget())
            .append("courseEmphasis", getCourseEmphasis())
            .append("courseDifficulty", getCourseDifficulty())
            .append("teachTime", getTeachTime())
            .append("teachAchievement", getTeachAchievement())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
